Blend nodes might have NULL top/bottom nodes
authorEmmanuele Bassi <ebassi@gnome.org>
Thu, 26 Nov 2020 00:21:11 +0000 (00:21 +0000)
committerEmmanuele Bassi <ebassi@gnome.org>
Thu, 26 Nov 2020 00:21:11 +0000 (00:21 +0000)
We have code in place to handle a NULL node in the state when dealing
with blend nodes, but we don't always check for NULL, which leads to
warnings in the CSS Blend modes demo.

gtk/gtksnapshot.c

index e3b3538c2f3e558ebe46f12be6bbf1a5fef1a436..40122f633892972c4cf3f08a8bdb80befc80eb6b 100644 (file)
@@ -1178,7 +1178,9 @@ gtk_snapshot_collect_blend_top (GtkSnapshot      *snapshot,
   GdkRGBA transparent = { 0, 0, 0, 0 };
 
   top_node = gtk_snapshot_collect_default (snapshot, state, nodes, n_nodes);
-  bottom_node = gsk_render_node_ref (state->data.blend.bottom_node);
+  bottom_node = state->data.blend.bottom_node != NULL
+              ? gsk_render_node_ref (state->data.blend.bottom_node)
+              : NULL;
 
   g_assert (top_node != NULL || bottom_node != NULL);
 
@@ -1199,7 +1201,7 @@ gtk_snapshot_collect_blend_top (GtkSnapshot      *snapshot,
 static void
 gtk_snapshot_clear_blend_top (GtkSnapshotState *state)
 {
-  gsk_render_node_unref (state->data.blend.bottom_node);
+  g_clear_pointer (&(state->data.blend.bottom_node), gsk_render_node_unref);
 }
 
 static GskRenderNode *